Мутация белка
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
1024 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

РНК можно рассматривать как длинную цепочку, составленную из нуклеотидов. В этой задаче нуклеотидом будем называть один из символов 'U', 'C', 'A', 'G'. Три подряд идущих нуклеотида образуют кодон (порядок нуклеотидов в кодоне важен). Каждому кодону соответствует некоторая аминокислота, при этом нескольким различным кодонам может соответствовать одна и та же аминокислота:

Соответствие кодонов аминокислотам

Выберем первый нуклеотид в центре, далее будем переходить на следующее кольцо по соответствующему нуклеотиду, соседнему со стороной фигуры.

Например, «AUG» — это кодон, который соответствует аминокислоте 'M'.

Обратите внимание, что старт кодон выглядит как «AUG», а стоп кодон — это один из вариантов: «UAA», «UAG», «UGA».

Будем говорить, что белок — это последовательность аминокислот, которая начинается с аминокислоты 'M' и заканчивается одной из аминокислот, являющихся стоп-кодоном (такие аминокислоты обозначены в таблице кружком). Стоп-кодон не может встречаться в середине белка. Аминокислота 'M', напротив, может встречаться несколько раз.

Биолог исследует белок длины $$$n$$$. При синтезе РНК произошла ошибка: в неё было вставлено ещё $$$k$$$ нуклеотидов в произвольные места. В результате получилась последовательность из $$$3n + k$$$ нуклеотидов, и биолог хочет восстановить какой-нибудь белок длины $$$n$$$.

Входные данные

В первой строке записано одно целое число $$$t$$$ — количество наборов входных данных. В этой версии задачи во всех тестах $$$t=1$$$.

Во $$$2\cdot (t + 1)$$$-й строке записаны два целых числа $$$n$$$ и $$$k$$$ ($$$2 \le n \le 10^5$$$, $$$1 \le k \le 10^5$$$).

В $$$2\cdot (t + 1) + 1$$$-й строке записана строка длины $$$3n + k$$$, которая является последовательностью нуклеотидов. Гарантируется, что строка содержит только символы 'U', 'C', 'A', 'G'.

Выходные данные

Выведите $$$t$$$ строк, в каждой из них $$$k$$$ различных целых чисел — номера удаляемых нуклеотидов в тесте $$$t$$$. Номера можно выводить в любом порядке.

Система оценки

В этой версии задачи $$$40$$$ тестов помимо тестового примера из условия, каждый оценивается в $$$1$$$ балл. Тестовый пример не оценивается.

Длина восстановленного белка $$$len$$$ определяется следующим образом.

Рассмотрим строку, полученную после удаления некоторых нуклеотидов, и разобьём её на кодоны. Затем найдём первое вхождение старт-кодона и первое вхождение стоп-кодона, расположенное после него. Тогда длиной белка будем считать количество аминокислот от 'M' до этого стоп-кодона включительно.

Количество баллов за тест определяется по формуле $$$$$$score = \frac{len}{n}.$$$$$$

Обратите внимание, что если у вас выполнится одно из трёх условий:

  1. Нет ни одного старт кодона
  2. Нет ни одного стоп кодона
  3. Все старт кодоны находятся после всех стоп кодонов
То вы получите $$$0$$$ баллов за тест.

ПодзадачаБаллыДоп. ограничения
00тесты из условия
18$$$2 \le n \le 6$$$, $$$1 \le k \le 6$$$
28$$$k = 1$$$
38$$$k = 2$$$
48$$$k = 3$$$
58Вставка происходит только между соседними кодонами

Пример

Входные данные
1
2 1
AUUGUGA
Выходные данные
3 

Примечание

Для удобства обозначим стоп кодон как 'e'.

В первом примере после удаления нуклеотидов под номером $$$3$$$ получим последовательность нуклеотидов AUGUGA, разобьём её на кодоны AUG, UGA — это соответствует белку Me. Его длина равна 2.